// Package coding_round_1 22-1190
// @Title coding_round_1
// @Description
// @Author  == 琳琳也叫王木木 ==  2021/9/11 17:26
// @Create  2021/9/11 17:26
package coding_round_1

//从前往后遍历字符串，将不是 ) 的字符串从「尾部」放入队列中
//当遇到 ) 时，从队列「尾部」取出字符串，直到遇到 ( 为止，并对取出字符串进行翻转
//将翻转完成后字符串重新从「尾部」放入队列
//循环上述过程，直到原字符串全部出来完成
//从队列「头部」开始取字符，得到最终的答案

// 反转带有括号的子串 40 ( 41 )
func ReverseParentheses(s string) string {
	stack := [][]byte{} // 创建一个二维矩阵
	str := []byte{}     // 创建一个空数组
	for i := range s {
		if s[i] == '(' {
			stack = append(stack, str)
			str = []byte{}
		} else if s[i] == ')' {
			// 翻转数组
			for j, n := 0, len(str); j < n/2; j++ {
				str[j], str[n-1-j] = str[n-1-j], str[j]
			}
			// 追加
			str = append(stack[len(stack)-1], str...)
			stack = stack[:len(stack)-1]
		} else {
			str = append(str, s[i])
		}
	}
	return string(str)
}
